package com.weiter.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.weiter.common.core.core.domain.entity.SysDictData;
import com.weiter.common.core.core.page.PageQuery;

import java.util.List;

/**
 * 字典数据
 * @author weiter
 */
public interface ISysDictDataService extends IService<SysDictData> {

    /**
     * 查询字典数据分页列表
     * @param query     字典数据查询条件
     * @param pageQuery 分页查询信息
     * @return 字典数据分页列表
     */
    Page<SysDictData> selectDictDataPage(SysDictData query, PageQuery pageQuery);

    /**
     * 查询数据类型列表
     * @param query 字典数据查询条件
     * @return 字典数据列表
     */
    List<SysDictData> selectDictDataList(SysDictData query);

    /**
     * 查询字典数据
     * @param dictType 字典类型
     * @return 字典数据集合
     */
    List<SysDictData> selectDictDataByType(String dictType);

    /**
     * 新增字典数据
     * @param dictData 字典数据
     * @return 结果
     */
    int insertDictData(SysDictData dictData);

    /**
     * 修改字典数据
     * @param dictData 字典数据
     * @return 结果
     */
    int updateDictData(SysDictData dictData);

    /**
     * 删除字典数据
     * @param dictCodes 需要删除的字典数据ID
     */
    void deleteDictDataByIds(Long[] dictCodes);

    /**
     * 设置字典缓存
     * @param key       参数键
     * @param dictDatas 字典数据列表
     */
    void setDictCache(String key, List<SysDictData> dictDatas);

    /**
     * 获取字典缓存
     * @param key 参数键
     * @return dictDatas 字典数据列表
     */
    List<SysDictData> getDictCache(String key);
}
